#include<iostream>
#include<vector>
#include<unordered_map>
using namespace std;
int t, n;
string s;
bool vis[20];
bool flag;
int path[20];
unordered_map<int, bool> memo;

// DFS全排列，尝试所有可能的添加顺序
void dfs(int p, int size)
{
    if (flag) return;
    if (p == (1 << n) - 1)
    {
        flag = true;
        return;
    }
    if (memo.count(p) and !memo[p]) return;
    for (int i = 0; i < n; i++)
    {
        if (!(p & (1 << i)) && !vis[i])
        {
            int np = p | (1 << i);
            if (s[np - 1] == '0')
            {
                vis[i] = true;
                path[size] = i + 1;
                dfs(np, size + 1);
                if (flag) return;
                vis[i] = false;
            }
        }
    }
    if (!flag)  memo[p] = false;
}

int main()
{
    cin >> t;
    while (t--)
    {
        cin >> n >> s;
        // 初始化
        flag = false;
        fill(vis, vis + n, false);
        memo.clear();  // 清空记忆化数组
        dfs(0, 0);
        // 输出结果
        if (flag)
        {
            cout << "Yes" << endl;
        }
        else
        {
            cout << "No" << endl;
        }
    }
    return 0;
}